Transmission Control Protocol (TCP) is one of the most basic communication protocols used in the Internet and on other interconnection networks and nowadays has become an actual standard for network communication. The TCP is mainly adapted to provide inter-process communication mechanisms and ensure the reliability of data transmission. The reliability includes acknowledging the reception of information data packets, marking sequence information of packets, and ensuring integrity of the packets, as well as controlling the errors, for example, rules for dealing with the problems that no acknowledgement information is received, the packets do not arrive in sequence, and the packets get dropped or are sent in incorrect order.
According to the analysis of the TCP, a sending window controls whether a TCP sender is able to send new data packet and the number of data packets that can be sent, where the sending window is also referred to as a congestion window (cwnd). Change of the sending window is mainly associated with an acknowledgement (ACK) signaling received by a sender. The TCP sender controls the moving rightwards of the window according to a sequence number of a TCP packet carried in the received ACK, and controls an enlargement of the window according to the number of received ACKs. For example, referring to FIG. 1, the TCP sender receives a new ACK that is carried in a TCP packet with a sequence number of 9. Therefore, the TCP sender moves the sending window rightwards for one data packet, i.e., to the position of a packet No. 10 according to the sequence number of the TCP packet carried in the received ACK, and meanwhile enlarges the sending window by a size of one data packet, i.e., to the position of a packet No. 11 according to the number of received ACKs.
Currently, to better ensure the reliability of data transmission, various TCP optimization solutions are provided, for example, I-TCP algorithm, SNOOP, and WTCP, all of which adapt a line link and a radio link by setting a TCP proxy between a TCP sender and a TCP receiver, as shown in FIG. 2.
In the I-TCP algorithm, the TCP proxy divides a TCP connection into two sections: a line link and a radio link. Accordingly, the TCP proxy is capable of obtaining data packets from a server (i.e., the TCP sender) via the line link in advance and buffers the obtained data packets in the TCP proxy. After receiving the data packets, the TCP proxy, in place of a terminal (i.e., the TCP receiver), returns an ACK in advance, and further controls the sending rate more quickly and flexibly according to the change of the radio link, to fully utilize the air interface transmission capability.
The TCP optimization solutions such as SNOOP and WTCP realize the local retransmission, timeout retransmission, and sending window mechanisms in the TCP proxy, to avoid and reduce the re-transmission at the TCP sender as much as possible, or use a time stamp to more precisely estimate a loop transmission delay, or re-transmit lost packets at a higher priority, or realize a more reasonable forwarding-rate-control algorithm in the TCP proxy to enhance and optimize the functions of the TCP proxy. Therefore, the performance of the TCP is improved.
Nevertheless, when the radio condition is deteriorated, the radio link is congested, and as the buffering capacity of the TCP proxy is limited, only part of the sent data packets can be buffered. Therefore, if the server sends too many data packets, the TCP proxy has to discard some data packets, and then the server enters congestion avoidance or slow-start state after discovering the packet loss. This affects the performance of the TCP. When the radio condition is improved, the transmission capability of the radio link is suddenly enhanced, and the TCP proxy quickly delivers the buffered data. As a result, no data in the buffer can be delivered, so that the channel is cleared and the TCP throughput is reduced.
Though the I-TCP algorithm can increase the TCP throughput, the data loss possibly occurs. This is because the data in the server is sent to the TCP proxy in advance, once a handover occurs, the data in the TCP proxy cannot be completely sent in time. Meanwhile, the server has already received the ACK returned by the TCP proxy and may not perform data re-transmission, so the transmission of the TCP turns out to become unreliable. If the data on an original TCP proxy is synchronized to a new TCP proxy during the handover, the handover process becomes complex, the handover delay is greatly increased, and what's worse, the TCP connection on an upper layer may even be disconnected.
The prior art has at least the following problem:
The TCP proxy is capable of controlling its downstream forward link rate, but incapable of controlling its upstream forward link rate. In other words, the TCP proxy cannot control the sending rate at the section from the server to the TCP proxy, and thus cannot ensure that enough data packets are buffered. Therefore, once the radio condition is improved, the radio bandwidth may not be effectively utilized since there are no buffered data packets, thereby resulting in a low efficient data transmission.